// 所有调用接口的代码都写到这里
import axios from 'axios'
import store from './store'

// 配置基地址
axios.defaults.baseURL = 'http://120.53.31.103:84/api'

// 添加前置拦截器
axios.interceptors.request.use(function (config) {
  // 从 vuex 中取出令牌
  if (store.state.user) {
    config.headers.Authorization = 'Bearer ' + store.state.user.remember_token
  }
  return config
}, function (error) {
  // 异步的要想返回必须转成 Promise
  return Promise.reject(error)
})

// 登录函数
export function login(mobile, password) {
  return axios.post('/adminUser/login', {
    // mobile: mobile,
    // password: password 可以简写为下面
    mobile,
    password
  })
}

// 获取菜单,把数据缓存到本地，除非关闭浏览器否则这些数据都从浏览器本地获取
export function getMenus() {
  // 从浏览器中获取数据
  let cache = sessionStorage.getItem('menus')
  // 判断本地浏览器中是否已经有这些数据了
  if (cache) {
    // 反序列化成对象
    cache = JSON.parse(cache)
    // 为了和下面返回的数据类型相同 ，所以也转成 Promise
    return Promise.resolve(cache)
  } else {
    // 调用接口获取数据，并把数据缓存到浏览器中
    return axios.post('/menu/info').then(res => {
      // 缓存起来
      sessionStorage.setItem('menus', JSON.stringify(res.data.rows))
      // 这里是异步的，要想返回必须转成 Promise 对象
      return Promise.resolve(res.data.rows)
    })
  }
}
